extends Node2D

@onready var viewPort = $SubViewport
@onready var viewTexture = $Sprite2DTexture


# Called when the node enters the scene tree for the first time.
func _ready():
	viewTexture.texture = viewPort.get_texture()
	var result = smartLayout(800, 600, 16.0/9, 4)
	print("aaa")

# 在你的GDScript脚本中添加以下代码

# 定义一个函数，用于计算智能布局的算法
func smart_layout(container_width, container_height, element_aspect_ratio, num_elements):
	# 计算每个元素的理想宽度
	var ideal_element_width = container_width / int(container_width / container_height * num_elements)
	# 计算每个元素的理想高度
	var ideal_element_height = ideal_element_width / element_aspect_ratio

	# 计算每行和每列的元素数量
	var num_rows = int(container_height // ideal_element_height)
	var num_columns = int(container_width // ideal_element_width)

	# 计算实际使用的元素数量，取行数和列数的乘积，但不超过给定的元素数量
	var actual_num_elements = min(num_elements, num_rows * num_columns)

	# 计算每个元素在容器中的宽度和高度
	var element_width = container_width / num_columns
	var element_height = element_width / element_aspect_ratio  # 根据传入的宽高比例计算高度

	# 初始化一个数组，用于存储每个元素的位置和大小
	var layout = []

	# 遍历每行和每列
	for row in range(num_rows):
		for col in range(num_columns):
			# 如果仍有未使用的元素，则计算该元素的位置和大小，并加入数组
			if actual_num_elements > 0:
				var x = col * element_width  # 计算元素的x坐标
				var y = row * element_height  # 计算元素的y坐标
				# 将元素的位置和大小添加到数组
				layout.append({"x": x, "y": y, "width": element_width, "height": element_height})
				# 更新剩余未使用的元素数量
				actual_num_elements -= 1

	# 返回包含每个元素位置和大小的数组
	return layout
